
import os

# 获取文件大小并格式化输出
def get_size(file):
    global file_size
    file_size = os.path.getsize(file)     # 获取文件大小
    file_name = os.path.basename(file)    # 获取文件名
    print("子文件[ " + file_name + " ] 的大小：%d字节" % file_size)     # 定义输出格式


res = []
def result(dir):
    dlist = os.listdir(dir)         # 获取当前目录下的子目录名称列表
    for i in dlist:
        file = os.path.join(dir, i) # 合并获得子目录的路径
        if os.path.isdir(file):     # 判断是否为文件夹，是则继续递归查找
            result(file)
        elif os.path.isfile(file):  # 判断是否为文件夹，是则打印大小
            get_size(file)
            res.append(file_size)   # 将子文件大小添加到列表res中，用于计算当前目录大小

# 设置交互界面，并对用户输入指令进行处理
while True:
    print("============ 查询指定目录大小 ============")
    print("========= 退出请直接按“回车键” =========")
    dir = input("请输入要查询的目录地址：")   # 提示用户输入要查询的文件地址
    if dir == "":  break  # 判断地址是否为空，是则退出程序
    else:
        if os.path.isfile(dir):
            get_size(dir)
        if os.path.isdir(dir):
            result(dir)
            print('该目录总大小：%d字节' % sum(res))

    res = []   # 重新定义 res，清空上一轮查询的数据

